package org.qiyu.live.user.provider;

import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.WebApplicationType;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

/*
不加 Dubbo 依赖的 Spring Boot 项目：
整个应用会被注册到 Nacos，视为一个 HTTP 服务（如 RESTful API），属于 应用级别的注册。
通过 @EnableDiscoveryClient 和 spring.cloud.nacos.discovery 配置实现。

添加 Dubbo 依赖的 Spring Boot 项目：
必须显式使用 @DubboService 注解的类才会被注册到 Nacos，视为 Dubbo RPC 服务，属于 接口级别的注册。
如果未暴露任何 Dubbo 服务（即无 @DubboService），则 仅注册 Spring Boot 应用本身（类似 HTTP 服务）。
 */
@SpringBootApplication
// 开启nacos服务发现
@EnableDiscoveryClient
// 开启dubbo，因为注册的是dubbo服务，需要开启dubbo来暴露服务，否则就无法被nacos发现。
@EnableDubbo
public class UserProviderApplication {
    public static void main(String[] args) {
        SpringApplication springApplication = new SpringApplication(UserProviderApplication.class);
        /*
        不启动tomcat服务器，只作为ioc容器启动。并不是说tomcat服务器和dubbo冲突，dubbo不是服务器，而是rpc框架
        在rpc包下的UserRpcImpl中@DubboService即可注册到dubbo中，供dubbo远程调用
         */
        springApplication.setWebApplicationType(WebApplicationType.NONE);
        springApplication.run(args);
    }
}
